package cn.itcast.mq.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommonConfig {

    //声明一个队列,设置超时时间，用于倒计时
    @Bean
    public Queue ttlQueue() {
        return QueueBuilder.durable("ttl.queue") // 指定队列名称，并持久化
                .ttl(10000) // 设置队列的超时时间，10秒
                .deadLetterExchange("dl.ttl.exchange") // 指定死信交换机
                .deadLetterRoutingKey("dl")
                .build();
    }

    //声明用于倒计时队列的交换机
    @Bean
    public DirectExchange ttlExchange() {
        return new DirectExchange("ttl.direct");
    }

    //绑定用于倒计时队列到对应的交换机
    @Bean
    public Binding ttlBinding(Queue ttlQueue, DirectExchange ttlExchange) {
        return BindingBuilder.bind(ttlQueue).to(ttlExchange).with("ttl");
    }

    @Bean
    public DirectExchange delayedExchange(){
        return ExchangeBuilder
                .directExchange("delay.direct")// 指定交换机类型和名称
                .delayed()// 设置delay属性为 true
                .durable(true)// 持久化
                .build();}
    @Bean
    public Queue delayedQueue() {
            return new Queue("delay.queue");
        }
     @Bean
        public Binding delayedBinding() {
        return BindingBuilder.bind(delayedQueue()).to(delayedExchange()).with("delay");
    }

}
